﻿Imports System.IO
Public Class frmBackup
    Public isBackup As Boolean = True
    Private strFolderDLMoi As String
    Private strTenCSDL As String
    Private bangThongTinTrichLuu As New DataTable()
    Public Sub New(ByVal isLoai As Boolean)

        ' This call is required by the Windows Form Designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        isBackup = isLoai
    End Sub

    Private Sub btBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btBrowse.Click
        If isBackup Then
            'mo form cho nguoi ta chon co so du lieu
            FolderBrowserDialog.SelectedPath = ""
            txtFolderName.Text = ""
            FolderBrowserDialog.ShowDialog()
            txtFolderName.Text = FolderBrowserDialog.SelectedPath()
        Else
            'mo form cho nguoi ta chon co so du lieu
            OpenFileDialog1.Filter = "Backup File(*.bak;*.dat)|*.bak;*.dat|All files (*.*)|*.*"
            FolderBrowserDialog.SelectedPath = ""
            txtFolderName.Text = ""
            OpenFileDialog1.ShowDialog()
            txtFolderName.Text = OpenFileDialog1.FileName()
        End If
    End Sub

    Private Function BackupCSDL() As Boolean
        Dim kq As Boolean = True
        Dim strFileBackUp As String = txtFolderName.Text & "\" & strTenCSDL & ".dat"
        Me.Cursor = Cursors.WaitCursor
        Try
            File.Delete(strFileBackUp)
        Catch ex As Exception
        End Try
        Dim strOldDB As String = XL_DULIEU.LayGiaTriThanhPhan("Initial Catalog")
        Dim cauLenh As String = " BACKUP DATABASE [" & strOldDB & "] To Disk ='" & strFileBackUp & "'"
        If (XL_DULIEU.ThucHienLenh(cauLenh) = False) Then
            kq = False
            Me.Cursor = Cursors.Arrow
            Return kq
        End If
        Me.Cursor = Cursors.Arrow
        Return kq
    End Function

    Private Sub btDongForm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btDongForm.Click
        Me.Close()
    End Sub

    Private Sub btDongY_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btDongY.Click
        If Not isBackup Then
            ShowMessages("Để khôi phục được dữ liệu yêu cầu các máy hiện tại không chạy ứng dụng Kho 706")
        End If
        'kiem tra chi cho trich luu tai may chu - noi chua du lieu
        Dim tenMayChuChuaDuLieu As String = XL_DULIEU.LayGiaTriThanhPhan("Data Source")
        If (tenMayChuChuaDuLieu.ToUpper() <> Environment.MachineName.ToUpper) Then
            MessageBox.Show("Chỉ hỗ trợ trích lưu tại máy chủ chứa dữ liệu!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Exit Sub
        End If

        If (txtFolderName.Text = "" And strFolderDLMoi = "") Then
            MessageBox.Show("Chưa chọn thư mục chứa dữ liệu!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Exit Sub
        Else
            If (txtFolderName.Text = "") Then
                txtFolderName.Text = strFolderDLMoi
            Else
                strFolderDLMoi = txtFolderName.Text
            End If
        End If
        If isBackup Then
            'kiem tra xem nguoi dung co nhap du thong tin
            If (txtTenCSDL.Text = "") Then
                MessageBox.Show("Tên cơ sở dữ liệu chưa có!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Exit Sub
            End If
            strTenCSDL = txtTenCSDL.Text
            'kiem tra xem ten thu muc va ten co so du lieu co qua dai hay khong
            If (txtFolderName.Text.Length > 255) Then
                MessageBox.Show("Tên thư mục không được quá 255 ký tự!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
            If (txtTenCSDL.Text.Length > 50) Then
                MessageBox.Show("Tên CSDL không được quá 50 ký tự!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
            If (BackupCSDL() = False) Then
                MessageBox.Show("Sao lưu dữ liệu không thành công. Có thể bạn không có quyền trích lưu!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Else
                MessageBox.Show("Sao lưu dữ liệu thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Me.Close()
            End If
        Else
            'If (RestoreCSDL() = False) Then
            '    MessageBox.Show("Sao lưu dữ liệu không thành công. Có thể bạn không có quyền trích lưu!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information)
            'Else
            '    MessageBox.Show("Sao lưu dữ liệu thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information)
            '    Me.Close()
            'End If
        End If
    End Sub

    Public Sub InitBackupInfo()
        btDongY.Text = "Sao lưu"
        Me.Text = "Sao lưu dữ liệu"
        GroupBox1.Text = "Thực hiện sao lưu dữ liệu"
        'chon thu muc cai dat SQL server
        strFolderDLMoi = My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\KHO706_DataBackup"
        'kiem tra xem duong dan nay co khong
        Dim thuMucSQL As DirectoryInfo = New DirectoryInfo(strFolderDLMoi)
        If (thuMucSQL.Exists = False) Then
            thuMucSQL.Create()
        End If
        txtFolderName.Text = strFolderDLMoi
        txtTenCSDL.Text = "Kho706Backup_" + Date.Now.Day.ToString() + "-" + Date.Now.Month.ToString() + "-" + Date.Now.Year.ToString()
    End Sub

    Public Sub InitRestoreInfo()
        Label1.Visible = False
        txtTenCSDL.Visible = False
        btDongY.Text = "Khôi phục"
        Me.Text = "Khôi phục dữ liệu"
        GroupBox1.Text = "Thực hiện Khôi phục dữ liệu"
    End Sub

    Private Sub frmTrichLuuDuLieu_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If isBackup Then
            InitBackupInfo()
        Else
            InitRestoreInfo()
        End If
    End Sub
End Class